<?php
/**
 * フォーム インプットチェックボックスコントローラ
 */
require_once __DIR__ . '/../Input.php';

/**
 * フォームインプットチェックボックスコントローラ
 * @author admin
 *
 */
class Hlib_Form_Inpt_Checkbox extends Hlib_Form_Input
{
	/** ラベルタグ */
	const LABEL = '<label for="%s">';
	
	/**
	 * コンストラクタ
	 */
	public function __construct()
	{
		parent::__construct();
		$this->_setMyType();
	}
	
	/**
	 * インプットタイプを設定する
	 */
	protected function _setMyType()
	{
		$this->type = self::TYPE_CHECKBOX;
	}
	
	/**
	 * ラベルを返す
	 * @return string
	 */
	public function fetchLabel()
	{
		$sHtml = '';
		if ($this->GeneralAttibutes->id != '') {
			$sHtml = sprintf(self::LABEL, $this->GeneralAttibutes->id);
		}
		$sHtml .= $this->contents . '</label>';
		return $sHtml;
	}
}

/**
 * チェックボックスのならび
 * @author admin
 *
 */
class Hlib_Form_Input_CheckboxList
{
	/** 複数のチェックボックス */
	public $CheckboxList = array();
	/** チェックボックスのネーム属性 */
	public $name;
	
	/**
	 * チェックボックスHTMLを返す
	 * @param unknown $index
	 * @return unknown
	 */
	public function fetchCheckbox($index)
	{
		$sHtml = '';
		$this->CheckboxList[$index]->name = $this->_getAttributeNameValue();
		/***
		 * HTTPリクエストからCHECKED判定
		 */
		if (array_search($this->CheckboxList[$index]->value, $_REQUEST[$this->name])!==FALSE) {
			$this->CheckboxList[$index]->checked = TRUE;
		}
		$sHtml = $this->CheckboxList[$index]->fetch();
		return $sHtml;
	}
	
	/**
	 * ネーム属性値を返す
	 * チェックボックスは複数並べることを想定するのでサフィックスに'[]'を付与
	 * @return string
	 */
	protected function _getAttributeNameValue()
	{
		$result = '';
		$result = $this->name . '[]';
		return $result;
	}
	
	/**
	 * チェックボックスのラベルを返す
	 * @param unknown $index
	 * @return string
	 */
	public function fetchLabel($index)
	{
		$sHtml = '';
		$sHtml = $this->CheckboxList[$index]->fetchLabel;
		return $sHtml;
	}
	
}